package com.icloud.article.boot.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.icloud.article.boot.dto.*;
import com.icloud.article.boot.dto.AdminArticlePageDto;
import com.icloud.article.boot.vo.AdminArticleVo;
import com.icloud.article.boot.vo.ArticleBrowsedPageVo;
import com.icloud.article.boot.vo.ArticlePageVo;
import com.icloud.article.boot.vo.ArticleVo;
import com.icloud.common.database.model.Article;

import java.util.Collection;
import java.util.List;


/**
 * 帖子service
 */
public interface ArticleService extends IService<Article> {

    /**
     * 发布帖子
     * @param dto
     */
    boolean publish(ArticleDto dto);

    /**
     * 分享
     * @param dto
     * @return
     */
    boolean forward(ForwardDto dto);

    boolean cancelForward(CancelForwardDto dto);

    /**
     * app用户删除帖子
     * @param id 帖子id
     */
    boolean delete(Long id);

    /**
     * 分页
     * @param dto
     * @return
     */
    IPage<AdminArticleVo> adminPage(AdminArticlePageDto dto);

    /**
     * app分页
     * @param dto
     * @return
     */
    ArticlePageVo appPage(ArticlePageDto dto);

    ArticleBrowsedPageVo browsedPage(ArticleBrowsedPageDto dto);

    /**
     * 查询详情
     * @param id
     * @return
     */
    ArticleVo load(Long id);


    /**
     * 根据ids查询vo
     * @param ids           帖子ids
     * @return
     */
    List<ArticleVo> listVoByIds(Collection<Long> ids);
}
